/*
 * DBClass.h
 *
 *  Created on: 2011-8-10
 *      Author: hywie
 */

#ifndef DBCLASS_H_
#define DBCLASS_H_

#include <iostream>
#include <list>
#include <map>
#include <pthread.h>
#include "DBBase.h"
#include "TypeDefine.h"

using namespace std;

class DBClass:public DBBase {
public:
	DBClass();
	virtual ~DBClass();
	void setServ_fd(int fd);	//设置服务器监听套接字
	void threadAdd(pthread_t pid);	//线程数+1,记录线程号
	void socketAdd(int id, int sock_fd);	//套接字+1,绑定用户帐号(id)和对应的套接字(sock_fd)
	bool checkUser(int id, string pwd, string &username);		//检测用户登录信息
	void personAdd(struct def_person);	//在线人数+1,记录新登录用户的信息
	void downlineRemove(int id);	//用户下线,更新用户信息集合
	string getAllUsers();		//得到当前在线的所有用户信息
	void radioOneMessage(struct def_msg msg);		//广播一条消息

private:
	int serv_fd;	//监听套接字
	list<pthread_t> thread_list;		//<pthread_id>,线程号集合
	map<int, int> socket_map;			//<id, sock_fd>,绑定用户帐号(id)和对应的套接字
	map<int, def_person> person_map;	//<id, user>,绑定用户帐号(id)和该用户的所有信息
};

#endif /* DBCLASS_H_ */
